home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / net / bind-contrib.tar.gz / bind-contrib.tar / contrib / host / RELEASE_NOTES < prev    next >
Text File  |  1996-12-02  |  41KB  |  953 lines

  1.     @(#)RELEASE_NOTES       e07@nikhef.nl (Eric Wassenaar) 961113
  2.  
  3. yymmdd        Description of changes per release
  4. TODO        Things that still need to be done
  5. WISHLIST    Wishes expressed by various people
  6. NOTES        Important issues to keep in mind
  7. MISC        Miscellaneous reminders
  8.  
  9. # ----------------------------------------------------------------------
  10. # Description of changes per release
  11. # ----------------------------------------------------------------------
  12.  
  13. 961113
  14.     Portability fix.
  15.         Trying to include <strings.h> was a bit over-ambitious
  16.         and caused confusion on some platforms.
  17.         On certain platforms PAGESIZE is not a constant, but
  18.         hides a sysconf() call. This precludes initialization
  19.         of static variables in malloc.c
  20.         There are no functional changes in this release.
  21.  
  22. 961013
  23.     Configurable defaults.
  24.         Make the compiled-in read timeout during stream I/O
  25.         configurable in conf.h. The default value is 60 seconds.
  26.         Make the new default _res.retry and _res.retrans values
  27.         configurable in conf.h. Note that the _res.retrans value
  28.         can be overridden with the -s command line option.
  29.     Minor fixes.
  30.         Guard against possible interrupts during I/O handling.
  31.  
  32. 961012
  33.     Multiple answers during zone listing.
  34.         Allow multiple resource records per reply buffer packet
  35.         during zone transfers. Currently BIND puts each resource
  36.         record in a seperate reply buffer, but there are other
  37.         implementations which behave differently. Important fix.
  38.  
  39. 961010
  40.     New resource records and query types.
  41.         Add support for T_NAPTR resource records.
  42.         Define T_EID/T_NIMLOC/T_ATMA resource record types, but
  43.         they have no support yet.
  44.     Minor fixes.
  45.         When comparing domain names in routines indomain() or
  46.         samedomain(), properly handle embedded quoted dots.
  47.         This is just a generalization. Currently these modules
  48.         are used only in those cases where embedded quoted dots
  49.         are not valid.
  50.     Miscellaneous changes.
  51.         Attempt to further reduce lint clutter. It is difficult
  52.         to eliminate this altogether. There are too many subtle
  53.         differences between various platforms.
  54.  
  55. 960929
  56.     New resource records and query types.
  57.         Define the new IXFR type as per RFC 1995. No support
  58.         for this yet, however.
  59.         Add support for T_KEY and T_SIG resource records.
  60.         These require some new utility functions.
  61.         Recognize T_NXT and T_SRV which still have draft status.
  62.     Extra safety checks.
  63.         After a positive return from an ordinary gethostbyname
  64.         or gethostbyaddr we cannot be absolutely sure that the
  65.         size of the canonical h_name is within bounds.
  66.         Note that this is guaranteed by host's internal modules.
  67.     Minor fixes.
  68.         Be more restrictive with respect to wildcard checking.
  69.         Make sure it is really specified as the first label.
  70.         Construct reverse in-addr.arpa name without trailing dot
  71.         if we know that this is already an absolute name.
  72.     Miscellaneous changes.
  73.         Print also the input name we are going to hostalias().
  74.         Rename a few variables for better readability.
  75.         Add various definitions that might be missing in the
  76.         default include files on some weird platforms.
  77.         Use a configurable limit for the number of recursive
  78.         chain lookups.
  79.         Some cleanup to avoid lint warnings on some platforms.
  80.     Revised manual page.
  81.         Some items needed an update.
  82.         Extend the list of related RFCs.
  83.         Several layout changes, suggested by Greg Woods.
  84.  
  85. 960921
  86.     Extend functionality of -A option.
  87.         If the -A flag is specified along with any explicit
  88.         list mode option, it not only enables reversed address
  89.         checking, it also enables those special checks that are
  90.         normally suppressed during recursive listings, such as
  91.         checks for canonical host names and invalid underscores.
  92.     Revise -p option plus explicit server.
  93.         Consider the set of NS servers gotten from an explicit
  94.         server as authoritative if the -p option is also given.
  95.         This affects whether or not to print lame delegation
  96.         warnings in case the SOA record could not be retrieved.
  97.         Suppress lame delegation warnings in case the A records
  98.         for NS servers could not be retrieved and an explicit
  99.         server is specified. The latter was an oversight.
  100.         Indicated by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>
  101.     Improve error reporting.
  102.         After a negative return from an ordinary gethostbyname
  103.         or gethostbyaddr we don't know whether or not the answer
  104.         was authoritative. Perform an extra lookup in some few
  105.         cases where we really want to distinguish between them.
  106.         This is kludgy, and needs improvement.
  107.     Revise additional checking during RR printout.
  108.         This prevents possible recursive loops in some cases.
  109.         Requires adapting the way state information is passed
  110.         via print_info() and print_rrec().
  111.     Make query section consistency checks.
  112.         When retrieving certain crucial information, such as
  113.         SOA or NS records, make sure the qdcount is exactly one
  114.         as it should be.
  115.         The values in the query section in a reply should match
  116.         those in the original query. This is already enforced
  117.         by the BIND 4.9 res_send(). An error is reported when a
  118.         mismatch is detected, but results are processed anyway.
  119.     Make sure response comes from a known server.
  120.         When using datagrams, compare the source address of the
  121.         response to the list of known servers. Ignore the answer    
  122.         if there is a mismatch. Was missing for HOST_RES_SEND.
  123.     Minor bug fixes.
  124.         When retrieving SOA records, make sure they belong to
  125.         the requested domain.
  126.         Must properly set h_errno in some obscure circumstances.
  127.     Miscellaneous changes.
  128.         Clear the entire sockaddr_in before filling in the
  129.         relevant entries. Some platforms seem to rely on
  130.         sin_zero being actually zero.
  131.  
  132. 960808
  133.     Conform to BIND 4.9.5 interpretation of TXT strings.
  134.         When multiple strings are encoded, they are now treated
  135.         and printed as individual quoted strings, separated by
  136.         whitespace. Formerly, they were concatenated and printed
  137.         as one single quoted string.
  138.         Note that this interpretation makes the TXT data field
  139.         multi-valued, and precludes the use of strings that are
  140.         longer than 255 characters.
  141.  
  142. 960512
  143.     Allocate list of host data dynamically.
  144.         This avoids the MAXHOSTS static limit, and keeps the
  145.         initial BSS of the executable to a reasonable size.
  146.         Mentioned by Greg Woods <woods@most.weird.com>
  147.         The list will be expanded in chunks as needed during
  148.         zone transfers, but will not shrink again.
  149.     Escape special characters within quoted strings.
  150.         Data fields of TXT/HINFO/UINFO records are printed as
  151.         quoted strings. Some special embedded characters should
  152.         be backslash-escaped in the output format.
  153.     Properly handle tcp packet overflow.
  154.         If the supplied answer buffer space is insufficient to
  155.         store the entire answer, res_send() is supposed to
  156.         return the length of the entire untruncated answer, not
  157.         the number of bytes that are actually available.
  158.     Increase MAXPACKET packet buffer size.
  159.         This is now set to the maximum value used internally
  160.         by the BIND named. The same value is used by dig.
  161.         Although still static, it should be sufficient.
  162.     Miscellaneous changes.
  163.         Show the length of the received answer in various debug
  164.         messages. This gives some insight in case of truncation.
  165.  
  166. 960417
  167.     Rudimentary support for AAAA RR.
  168.         Just decode and print the ip v6 address during regular
  169.         RR type processing, in the most straightforward way.
  170.         No provisions for reverse lookups yet.
  171.     Increase MAXPACKET packet buffer size.
  172.         The traditional value 1024 for the (tcp) packet size is
  173.         no longer sufficient (see moderators.uu.net MX records).
  174.     Miscellaneous changes.
  175.         In verbose mode, show the number of bytes in the answer
  176.         if it exceeds the (udp) packet size PACKETSZ (512), or
  177.         in case the answer is truncated. Print the truncation
  178.         indication at a more appropriate position.
  179.  
  180. 951231
  181.     Cosmetic changes.
  182.         Print all relevant messages in debug mode to stdout,
  183.         and appropriately prefix them with ";; " to conform
  184.         with the BIND 4.9.3 conventions.
  185.     Miscellaneous changes.
  186.         Consider the all-ones broadcast address a fake address.
  187.  
  188. 951024
  189.     Avoid potential alignment conflicts.
  190.         Allocate socket addresses of type struct sockaddr_in
  191.         instead of type struct sockaddr. The first one has
  192.         stricter alignment restrictions, although they have
  193.         the same size.
  194.     Correct various misspellings.
  195.         Noted by Keith Bostic <bostic@bsdi.com>
  196.  
  197. 950925
  198.     Portability fix.
  199.         Refine type definitions for the arguments to various
  200.         resolver routines to be even more backward compatible,
  201.         and to avoid compilation or lint warning messages on
  202.         new platforms. It should run clean on BSD44 systems.
  203.         There are no functional changes in this release.
  204.  
  205. 950923
  206.     Add new -z option to list delegated zones in a zone.
  207.         This is a new variant of the zone listing specials.
  208.         A zone transfer is done, and only the names of the
  209.         encountered delegated zones are printed.
  210.         This option is undocumented, and subject to change.
  211.     Sort list of delegated zones alphabetically.
  212.         Before acting on delegated zones during zone listings,
  213.         sort them in alphabetical order for prettier output.
  214.     Portability fix.
  215.         The BIND 4.9.3 resolver routines require the passed
  216.         buffer arguments to be of type u_char instead of char.
  217.         This causes a prototype mismatch for HOST_RES_SEND.
  218.         Mentioned by Geert Jan de Groot <geertj@ripe.net>
  219.     Minor command option functionality change.
  220.         The -L flag, when given without any other list mode
  221.         option, now implies the -l option.
  222.     Miscellaneous code cleanup.
  223.         Pass the name of the actually contacted server during
  224.         zone listings in more elegant way.
  225.         Avoid (harmless) lint warnings on picky platforms.
  226.  
  227. 950822
  228.     Fix bug in recursive lookup handling.
  229.         During recursive lookups, e.g. when following CNAME
  230.         chains, querynames are always assumed to be already
  231.         fully qualified, and must be tried ``as is''.
  232.         The classical example of a CNAME that points to the
  233.         pseudo "localhost.", or an erroneously dot-terminated
  234.         single name, should not be subject to local aliasing
  235.         or search list processing. They were.
  236.         Reported by Alexander Dupuy <dupuy@smarts.com>
  237.  
  238. 950809
  239.     Portability fix.
  240.         Check for SVR4 as well as for SYSV in port.h, which is
  241.         necessary for compilation via the master BIND Makefile.
  242.         Suggested by <Piete.Brooks@cl.cam.ac.uk>
  243.         There are no functional changes in this release.
  244.  
  245. 950502
  246.     Maintain hash list for zone name lookups.
  247.         This should not be really necessary for most practical
  248.         purposes, but it makes processing of the .in-addr.arpa
  249.         zone and even the .COM zone at least feasible.
  250.         The latter still requires quite a lot of memory, and
  251.         some cpu time to filter out the glue records from its
  252.         50000 A records and 110000 NS records.
  253.     The toplevel zone count as of today is:
  254.         COM        50000 delegated zones
  255.         IN-ADDR.ARPA    30000 delegated zones
  256.         ORG         5000 delegated zones
  257.         NET         3000 delegated zones
  258.         EDU         2000 delegated zones
  259.     Suppress various checks in quiet mode.
  260.         This avoids costly checks and achieves some speedup
  261.         in cases that nothing would have been printed anyway.
  262.     Supply alternative recv_sock() module.
  263.         The select() system call may fail on the solaris 2.4
  264.         platform without appropriate patches. An alarm can be
  265.         used instead, at the cost of extra system call overhead.
  266.  
  267. 950429
  268.     Fix bug in error reporting.
  269.         The name and address of the contacted server during
  270.         zone listings could be clobbered by intermediate
  271.         calls to res_send().
  272.  
  273. 950427
  274.     Fix glitch in host name lookup.
  275.         New entry would be inadvertently added to the hash
  276.         list in case the MAXHOSTS limit was reached.
  277.     Miscellaneous changes.
  278.         Speedup comparison of zone names and host names by
  279.         looking up zone names in the host name hash list.
  280.  
  281. 950407
  282.     Maintain hash list for host name lookups.
  283.         A linear search through the per-zone host name table
  284.         becomes very costly for zones with several thousands
  285.         of hosts. Significant speedup is achieved.
  286.         Even for recursive listings of many small zones the
  287.         reduction of total processing time is noticeable.
  288.  
  289. 950318
  290.     Increase (static) maximum number of hosts.
  291.         This avoids imposing arbitrary limits in most cases.
  292.  
  293. 950302
  294.     Prevent zone transfer for certain zones.
  295.         Some zones are known to contain bogus information.
  296.         E.g. definition of A records for all possible addresses
  297.         in a class-B network will bias the hostcount.
  298.         Add new -N option to define an explicit list of zones
  299.         for which a zone transfer is deliberately skipped.
  300.         Requested by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>
  301.     Miscellaneous code cleanup.
  302.         Split off various tasks from monolithic list_zone().
  303.         Invert the double matching loop in sort_servers().
  304.         Fix glitch when comparing matching domain labels.
  305.  
  306. 950115
  307.     Sort list of nameservers for a zone.
  308.         When the NS records for a zone are issued in BIND 4.9
  309.         round-robin fashion, this may yield an unfavorable
  310.         order for doing zone transfers. Apply some heuristic
  311.         to sort them according to preference, giving priority
  312.         to servers within your own domain or parent domains.
  313.         Add new option -P to define an explicit list of domains
  314.         of preferred servers, giving priority to matching ones.
  315.         Suggested by Marten Terpstra <marten@ripe.net>
  316.     Don't suppress certain rr data any more.
  317.         The preference value in the MX/RT/PX records and the
  318.         version number in the AFSDB record was suppressed in
  319.         non-verbose mode, unless the -T option was specified.
  320.         These values are now printed by default.
  321.         Requested by Geert Jan de Groot <geertj@ripe.net>
  322.  
  323. 941210
  324.     Adapt implementation of LOC RR.
  325.         The binary data format has already changed twice:
  326.         the four 4-bit fields are now four 8-bit fields,
  327.         and log2 encoding has changed to power-of-10 encoding.
  328.         Support for this will be incorporated in BIND 4.9.3.
  329.         Still undocumented in the host manual page.
  330.  
  331. 941206
  332.     Compatibility with BIND 4.9.3.
  333.         The NOCHANGE query response has now been conditionally
  334.         defined via #ifdef ALLOW_UPDATES. Older versions of
  335.         BIND may still return this (should have been FORMERR).
  336.     Improve error reporting.
  337.         Define a special h_errno status SERVER_FAILURE for the
  338.         case a SERVFAIL query response is returned. This is
  339.         used to report lame delegations during SOA checking
  340.         or zone transfers. Servers may return this code when
  341.         the zone data has expired altogether. This is not a
  342.         TRY_AGAIN situation if such server is authoritative.
  343.         Suggested by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>
  344.         Rename special status NOT_AVAILABLE to QUERY_REFUSED.
  345.     Various minor changes.
  346.         Check for invalid characters in T_AAAA record names.
  347.         Print optional protocol and port from T_A record
  348.         after a comment sign. Not sure whether this has ever
  349.         been used.
  350.  
  351. 941129
  352.     Implement LOC RR as defined by preliminary draft-RFC.
  353.         Requires conversion routines for spherical position,
  354.         vertical position, and precision.
  355.         Tested on big-endian, little-endian, Alpha, Cray.
  356.     This is only a pre-release.
  357.         Undocumented until RFC gets public.
  358.  
  359. 941125
  360.     Recognize new RR types as reserved by RFC 1700.
  361.         Implement PX RR type as defined per RFC 1664.
  362.         Implement GPOS RR type as defined per RFC 1712.
  363.     Include few simple utility scripts.
  364.         These are just examples of wrappers to host.
  365.         nslookup -- emulate most functions of the real one.
  366.         mxlookup -- lookup records at each of its servers.
  367.  
  368. 941006
  369.     Lessen restrictions for certain tests.
  370.         The checks for invalid underscores and canonical host
  371.         names were suppressed during recursive zone listings
  372.         on all levels. They are now suppressed only when not
  373.         operating on the base level. This enables the checks
  374.         during the ``host -C -L 1'' command.
  375.     Extend functionality of -A option.
  376.         If the -A flag is specified along with any explicit
  377.         list mode option, it enables reversed address checking.
  378.         The address of each encountered A record is reverse
  379.         mapped, and it is checked whether it is registered and
  380.         maps back to the A record name. This flag can safely
  381.         be specified in the ``host -CA -L 1'' command.
  382.     Add new -W option to list wildcard records in a zone.
  383.         This is a new variant of the zone listing specials.
  384.         A zone transfer is done, and only wildcard records
  385.         are printed. The default resource record type is MX.
  386.         This option is undocumented, and subject to change.
  387.  
  388. 941004
  389.     Improve printout.
  390.         Include conversion of the various time values from the
  391.         SOA record in the comment part during ordinary printout.
  392.  
  393. 941002
  394.     Call alternative res_debug print routine if available.
  395.         In BIND 4.9.* an alternative module is present which
  396.         accepts (as it should) the size of the query buffer.
  397.     Rearrange include files.
  398.         Move configuration definitions to new conf.h.
  399.  
  400. 940917
  401.     Improve support for NSAP records, as per RFC 1637.
  402.         Print ordinary NSAP addresses with separating dots,
  403.         after the 1-byte AFI, then after every 2 bytes.
  404.         Add new option -n to generate reverse NSAP within the
  405.         nsap.int domain, similar to the -i option.
  406.         Print reverse NSAP in forward notation, unless forced
  407.         to print full zone file format.
  408.  
  409. 940911
  410.     Verify that some host names are canonical.
  411.         This is formally required, but also in practice highly
  412.         desirable. The target hosts in NS and MX records only
  413.         are verified, being the most crucial.
  414.         Currently the test is skipped during recursive zone
  415.         processing, to avoid excessive output of non-canonical
  416.         MX targets.
  417.         When figuring out the nameservers for a zone before
  418.         doing a zone transfer, a non-canonical nameserver name
  419.         is always reported.
  420.     Report illegal domain names.
  421.         This is now done by default for 'host' related domain
  422.         names. The A and MX record names and NS and MX target
  423.         names are checked only.
  424.         Only alphanumeric characters and hyphen '-' are valid.
  425.         Currently the reporting of names containing underscores
  426.         is suppressed during recursive zone listings, to avoid
  427.         excessive output of such illegal host names.
  428.         During SOA checking, an illegal primary or hostmaster
  429.         is always reported.
  430.     Document the -I option.
  431.         This option does no longer trigger the checking of
  432.         invalid characters in names.
  433.         To suppress illegal underscore messages, use "-I _".
  434.         To show them during recursive listings, use "-I ''".
  435.     Modify various messages.
  436.         Make some warning messages slightly shorter, and start
  437.         the message with the resource record or zone name.
  438.         Most of the SOA check messages have been affected.
  439.         Remove the answer buf offset in the incomplete HINFO
  440.         warning messages.
  441.     Improve error reporting.
  442.         Include the name of an explicit server in ns_error()
  443.         messages describing h_errno. This was already done
  444.         for the errno messages.
  445.         Include the server name also in ns_error() messages
  446.         after a failing zone transfer from that server.
  447.         Define a special h_errno status NOT_AVAILABLE for the
  448.         case a query was explicitly refused. Some servers are
  449.         configured to refuse zone transfers.
  450.     Major update of manual page.
  451.         Explain some more failure messages.
  452.         Explain most of the common warning and error messages.
  453.  
  454. 940819
  455.     Modify various messages.
  456.         Include the server name in messages reporting failures
  457.         and problems during zone transfers.
  458.     Implement ttl consistency checks.
  459.         Multiple records of same name/type/class should have the
  460.         same ttl value in zone listings. This is now checked.
  461.         A suitable hash function is needed to minimize overhead.
  462.         The approach is similar to the function used in sendmail.
  463.         This has been a long standing wish from
  464.         Peter Koch <pk@TechFak.Uni-Bielefeld.DE>
  465.     Various speedup fixes.
  466.         Avoid unnecessary indomain() calls during zone listings.
  467.  
  468. 940713
  469.     Modify various messages.
  470.         Replace some of the ``extraneous'' messages with a more
  471.         descriptive text. Include name and type of the query in
  472.         messages reporting format errors in the response.
  473.         Include zone name in error messages during SOA check.
  474.     Revise check for valid names.
  475.         If a domain name refers to a ``mailbox'', the part up to
  476.         the first unquoted dot is the ``local part'' to which
  477.         the RFC 822 syntax rules apply.
  478.  
  479. 940623
  480.     Revise res_send() strategy.
  481.         Mark bad server status for certain conditions which make
  482.         it unlikely that we will succeed during the next try.
  483.         Operating system failures are not in this category.
  484.         Nameserver unreachable status is now reported in a more
  485.         reliable fashion. A second try would sometimes timeout.
  486.         (May be useful for monitoring the upcoming summer 1994
  487.         reshuffling of EBONE/EuropaNET/NSFnet interconnections).
  488.     Facelift for socket I/O routines.
  489.         Systematically use _res_close() to close a connection.
  490.         Include the answer packet length in debug printout.
  491.     Extend resolver initialization.
  492.         Set initial query ID to some arbitrary number.
  493.     Various speedup fixes.
  494.         Avoid unnecessary strlen() calls during zone listings.
  495.         Check whether the resource record data must be printed
  496.         outside the print routine to avoid unnecessary overhead.
  497.         Use bcopy() instead of sprintf() in obvious cases.
  498.     Better output format control.
  499.         In non-verbose and non-debug mode, only pure resource
  500.         record output is written to stdout.
  501.         Add new -Z option to force resource record output to be
  502.         in full zone listing format, including trailing dot in
  503.         domain names, plus ttl value and class indicator.
  504.     Rearrange include files.
  505.         Define resource record structures in rrec.h.
  506.         Function declarations moved to defs.h.
  507.  
  508. 940615
  509.     Various portability changes.
  510.         Avoid use of sizeof() for all entities that have a fixed
  511.         field width, and use predefined constants instead. This
  512.         is necessary for systems without 16 or 32 bit integers.
  513.         Fix use of ipaddr_t and struct in_addr appropriately.
  514.         All this makes the utility portable to e.g. Cray.
  515.     Save and restore state during recursive lookup.
  516.         Error codes could be clobbered during MAILB tracing.
  517.     Miscellaneous minor code cleanup.
  518.  
  519. 940603
  520.     Fix implementation for -F option properly.
  521.         Exchanging the role of stdout and the logfile now works
  522.         on all platforms. Asked by Artur Romao <artur@dns.pt>
  523.  
  524. 940526
  525.     Combine explicit server and -p option.
  526.         If both are specified, the explicit server is contacted
  527.         to retrieve the desired servers for the given zone
  528.         during zone listing/checking modes. This is useful for
  529.         checking zones that have not been registered yet.
  530.         Requested by Geert Jan de Groot <geertj@ripe.net>
  531.     Rudimentary support for NSAP records.
  532.         This is still very experimental. It is unclear how an
  533.         NSAP address should be encoded in the resource record,
  534.         and how its hierarchical structure is decided.
  535.         Inspired by the 4.9 diffs from cisco.com.
  536.  
  537. 940317
  538.     Print SOA serial always as an unsigned value.
  539.         Warn about ``extraordinary'' serial if high bit is set.
  540.     Reset errno to avoid stale values.
  541.         Could happen when doing multiple gethostbyaddr() calls
  542.         in extended mode when the BIND res_send() is linked in.
  543.         Problem noted by <Piete.Brooks@cl.cam.ac.uk>
  544.     Solaris portability fix.
  545.         For solaris 2.x use res_gethostby{addr,name} modules
  546.         to force dns lookups. The __switch_gethostby{addr,name}
  547.         modules have disappeared in solaris 2.3.
  548.  
  549. 930926
  550.     Extend -I option with argument containing allowed chars.
  551.         This string specifies formally illegal, but silently
  552.         allowed characters when checking illegal domain names.
  553.         The -I option is still necessary to enable checking.
  554.         Still done only for resource record names in listings.
  555.         Note that some hesiod names contain the '/' character.
  556.         Indicated by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  557.     Additional SOA record checks.
  558.         Check hostmaster field for illegal chars, such as '@'
  559.         (needed as long as data field names are not checked).
  560.     Revised SOA record checks.
  561.         Check primary field against list of known nameservers.
  562.         Issue warning if not among the authoritative servers.
  563.         This may be intentional in special cases, however.
  564.         Required some code reshuffling.
  565.     Add new -M option to list mailable subdomains in a zone.
  566.         This is a new variant of the zone listing specials.
  567.         A zone transfer is done (without listing anything by
  568.         default) to determine the available delegated zones.
  569.         For each of these zones, the MX records are printed.
  570.         Experimental, undocumented. Insufficient too: you
  571.         really want to see also the domains for which only
  572.         an MX record exist.
  573.     Cleanup terminology in the code documentation.
  574.         Remove the word 'subdomain' and cleanup the confusion
  575.         between 'domain' versus 'zone'.
  576.     Update manual page.
  577.         Use terminology that is technically more correct.
  578.         Explain various things that were still missing.
  579.  
  580. 930919
  581.     Print actual name that was queried in error messages.
  582.         Formerly, only the (possibly abbreviated) queryname
  583.         as specified on the command line was printed. 
  584.         Special care must be given if domain search is enabled,
  585.         especially in the enforced BIND compatibility mode.
  586.         Looks much better. Asked by <Piete.Brooks@cl.cam.ac.uk>
  587.     Some more SOA record tests.
  588.         Some records have the name of the zone specified in the
  589.         field that should contain the name of the primary server.
  590.     Miscellaneous minor changes.
  591.         Slightly modify the nameserver name printout during -C.
  592.         Set proper h_errno when answer buffer counts are corrupt.
  593.     Add new -V option to print version number.
  594.         Define version in separate vers.c
  595.     Use class mnemonics as defined in RFC 1035.
  596.         Print 'CH' instead of 'CHAOS'. Anyone using this ?
  597.         Recognize obsolete 'CS' or 'CSNET'. Pretty useless.
  598.         Just for ultimate completeness.
  599.     Check for invalid characters in domain names.
  600.         Only alphanumeric characters and hyphen '-' are valid.
  601.         Unfortunately, the use of underscore '_' is widespread,
  602.         so issuing a warning by default is unrealistic. Therefore:
  603.     Add new -I option to warn about illegal domain names.
  604.         Currently done only for resource record names during zone
  605.         listing. Could be extended to domain names in data fields.
  606.         Perhaps a warning by default in case illegal other than
  607.         underscore. Option is still undocumented as the semantics
  608.         are subject to change.
  609.  
  610. 930915
  611.     Add -R option to always first try search domains.
  612.         Normally querynames are assumed to be fully qualified
  613.         and are tried as such, unless it is a single name which
  614.         is always tried, and only once, in the default domain.
  615.         This option sets RES_DNSRCH and simulates the default
  616.         BIND behavior, with the exception that NO_DATA status
  617.         terminates the search immediately.
  618.         With the additional otherwise undocumented -B option the
  619.         BIND behavior is fully enforced and the search continues.
  620.         Added only for testing purposes, not for general use.
  621.     Few more BIND 4.9 compatibility changes.
  622.         Some resolver routines have gotten new argument types.
  623.     Adapt Makefile to BIND conventions.
  624.         The Makefile can be used completely stand-alone,
  625.         or can be invoked from the master BIND Makefile.
  626.         Affects names of various (inherited) make variables.
  627.         Change BIND_RES_SEND to HOST_RES_SEND with opposite
  628.         meaning. Default is HOST_RES_SEND in case stand-alone.
  629.  
  630. 930911
  631.     Extension of user interface.
  632.         Allow multiple arguments on command line or from stdin.
  633.         Requires new syntax for specifying explicit server.
  634.         New options -x and '-X server' indicate extended syntax.
  635.         Quite a lot reshuffling of code. Urgently requested by
  636.         <Piete.Brooks@cl.cam.ac.uk> and Paul Vixie <paul@vix.com>
  637.     Configurable default options.
  638.         Use an environment variable HOST_DEFAULTS to pre-define
  639.         default options and parameters. These are interpolated
  640.         in front of the command line arguments before scanning.
  641.         Syntax is the same as the command line syntax.
  642.     Fix bug when querying single name without dot.
  643.         Not only the default domain, but also the eventual other
  644.         search domains would be tried, although DNSRCH is off.
  645.         This is a long-standing bug. Very important fix.
  646.  
  647. 930908
  648.     Various declaration changes for portability.
  649.     Print TXT/HINFO/UINFO strings within double quotes.
  650.         It is done both in regular and zone listing output.
  651.         This is conforming the syntax for zone input files.
  652.     Add trailing dot to domain names in zone listing.
  653.         This is conforming the syntax for zone input files.
  654.         The trailing dot is not added in regular output.
  655.     Define exit codes in new exit.h header file.
  656.         This avoids the need to include /usr/ucbinclude when
  657.         running in non-BSD mode on solaris 2.x platforms.
  658.     Attempt to diagnose lame delegations.
  659.         Error messages about lame delegations are given during
  660.         zone listings and when checking SOA records (but only when
  661.         the contacted servers are supposed to be authoritative).
  662.         Also in case servers from NS records turn out not to exist.
  663.         This may need some refinement for special cases.
  664.     Perform some extra checks during zone listings.
  665.         Check for unexpected error status in packets. Only the
  666.         very first packet in response to a transfer query can
  667.         have an error status.
  668.     Issue warning if only a single nameserver found.
  669.         Not an error per se, but not much redundancy then.
  670.         Suggested by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  671.     Check for anomalous empty zone transfers.
  672.         Transfers consisting of only SOA records could occur if
  673.         we queried the victim of a lame delegation which happened
  674.         to have the SOA record present. Fake an error that will
  675.         result in a lame delegation message.
  676.         Mentioned by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  677.     Indicate list/check failure/success via exit code.
  678.         Failure status is returned in case any error has been
  679.         reported via errmsg or pr_error (not pr_warning).
  680.         For Ruediger Volk <rv@deins.informatik.uni-dortmund.de>
  681.     Add -o option to suppress rr output to stdout.
  682.         Can be used in combination with -f to separate rr output
  683.         from verbose comments and error output.
  684.     Perform some SOA timer consistency checks.
  685.         Check timer values for anomalies, such as (retry > refresh)
  686.         or (refresh + retry > expire).
  687.         Suggested by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  688.         Also compare all values instead of just serial.
  689.     More accurate reporting of zones processed.
  690.         Print total number of successful zone transfers versus the
  691.         number of attempted transfers. Print count of zones which
  692.         were successfully processed (transferred or -C checked)
  693.         versus the number of zones requested to be processed.
  694.         From this we can deduce the number of transfers that failed
  695.         and the number of times we couldn't find any nameservers.
  696.  
  697. 930901
  698.     Increase MAXNSNAME from 12 to 16.
  699.         This is conforming NSMAX in ns.h
  700.     Don't accumulate statistics if not necessary.
  701.         Skip the costly host count scan in case nothing would
  702.         be reported at all according to the command line options.
  703.     Add some extra checks during zone listings.
  704.         Check for invalid nonzero nscount and arcount.
  705.     Special handling for non-authoritative answers.
  706.         We had already NO_RREC for non-authoritative NO_DATA, but
  707.         non-authoritative HOST_NOT_FOUND would yield TRY_AGAIN.
  708.         Change this to NO_HOST to issue a separate error message.
  709.         This identifies some special cases, e.g. queries for a
  710.         non-existing name using class C_ANY when the nameserver
  711.         is authoritative only for one specific class.
  712.         Use TRY_AGAIN in both cases during zone listing errors.
  713.     Minor declaration changes for portability.
  714.     Add -F option to exchange role of stdout and logfile.
  715.         The '-F file' is the same as '-f file' but all stdout
  716.         output goes to the logfile, and stdout only gets the extra
  717.         resource record output (so that it can be used in pipes).
  718.         Implementation is inherently unportable. Supported only on
  719.         a few platforms where it happens to work.
  720.     Explain status messages in the manual page.
  721.      Include address and name of server in perror messages.
  722.         This gives a lot more information in case stderr and stdout
  723.         are differently redirected.
  724.  
  725. 930830
  726.     Make error checking in some routines uniform.
  727.     Miscellaneous declaration changes.
  728.     Filter resource record class appropriately.
  729.         In zone listings records of different class can show up,
  730.         e.g. HS records are mixed with IN records. Only records
  731.         of the requested class should be processed. This fixes
  732.         problems with recursive zone traversals and inaccurate
  733.         statistics. Pointed out by <Yves.Devillers@inria.fr>
  734.         and <Piet.Beertema@EU.net>. Important fix.
  735.     Include record class, if special, in some output.
  736.         Show the class if it is not the default IN class.
  737.     Include address of duplicate hosts in message.
  738.         This may help to locate the problem.
  739.     Properly concatenate long TXT strings that are split.
  740.         Long TXT strings (>255) are split as of BIND 4.8.3.
  741.         They were displayed incorrectly with TAB separators.
  742.         Problem noted by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  743.     Cleanup some DNS terminology in output messages.
  744.         Fix some confusion between '(sub)domain' and 'zone'. Only
  745.         done in the output of host, not yet in the documentation.
  746.         Pointed out by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  747.     Implement host address list as hashed list.
  748.         The linear list is replaced with a hashed list, using the
  749.         low-order address bits as the key. This may dramatically
  750.         speed up recursive zone listings. Very important fix.
  751.         Suggested by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  752.     Miscellaneous portability hooks.
  753.         Add new port.h header file.
  754.     Change u_long to u_int for resource record fields.
  755.         These are fixed 32-bit quantities.
  756.         Note that BIND 4.9 uses u_int32_t for these, but still uses
  757.         (inconsistently) u_short instead of u_int16_t.
  758.         Necessary for port to alpha and BIND 4.9.
  759.     Change u_long to ipaddr_t for 32-bit address fields.
  760.         For the time being, make this identical to u_long for non-
  761.         alpha machines with pre-BIND 4.9 to avoid lint warnings.
  762.         Note that BIND 4.9 uses u_int32_t for these.
  763.         Necessary for port to alpha and BIND 4.9.
  764.     Introduce new typedef for 'struct state'.
  765.         Necessary for BIND 4.9.
  766.     Make all arguments to vararg routines same type.
  767.         No more mixing of arbitrary pointers and ints. Only number
  768.         of arguments is variable. Requires few silly interfaces.
  769.         Necessary for port to alpha.
  770.     Add the RELEASE_NOTES file to explain changes.
  771.  
  772. 930209
  773.     Lookup server name with default resolver values.
  774.     Check SOA records without nameserver recursion.
  775.     Implement new RR types from RFC 1183 and 1348.
  776.  
  777. 921005
  778.     Anticipate ultrix specific resolv.h
  779.     Miscellaneous declaration changes.
  780.     Some reshuffling of code.
  781.  
  782. 920702
  783.     Recognize alternative program call names.
  784.     Distinguish between auth and non-auth NO_DATA.
  785.  
  786. 920624
  787.     Lookup server name before changing nameserver address.
  788.     Handle possible truncation in zone transfers.
  789.     Provide private simplified version of res_send().
  790.     Add -u option to force virtual circuit connections.
  791.     Move all socket I/O routines to separate send.c.
  792.  
  793. 920616
  794.     Allocate list of zonenames dynamically, not statically.
  795.     Move and slightly modify the test for fake hosts.
  796.     Suppress host count statistics during inverse listing.
  797.     Miscellaneous documentation updates.
  798.  
  799. 920315
  800.     Improve counting of hosts within domain.
  801.     Discard glue records not directly within domain.
  802.     Keep track of hosts with duplicate address.
  803.     Add -D option to list duplicate hosts.
  804.     Add -E option to list extrazone hosts.
  805.     Miscellaneous casting and typing cleanup.
  806.     Increase (static) number of possible subdomains.
  807.  
  808. 911201
  809.     Option -T also prints MX preference value.
  810.     Save name of longest hostname found (just for fun).
  811.     Undocumented option -g to select long names (fun).
  812.  
  813. 911010
  814.     Don't recurse on cnames if querytype is cname.
  815.  
  816. 910923
  817.     Count gateway hosts (with multiple addresses).
  818.     Add -G option to list gateway hosts.
  819.  
  820. 910905
  821.     Improve counting of hosts within domain.
  822.     Allow hosts not directly within domain.
  823.     Increase (static) maximum number of hosts.
  824.  
  825. 910415
  826.     Improve finding of subdomain names.
  827.     Allow subdomains not directly within domain.
  828.     Check for unauthoritative glue records.
  829.     Add -T option to print ttl when non-verbose.
  830.     Improve connect timeout handling.
  831.     Improve dotted quad parsing.
  832.     Minimum ttl is now called default ttl.
  833.  
  834. 910129
  835.     Maintain count of hosts during domain listings.
  836.     Check for hosts with same name as subdomain.
  837.     Add -H option for special host count mode.
  838.     Recognize obsolete T_MAILA.
  839.  
  840. # ----------------------------------------------------------------------
  841. # TODO
  842. # ----------------------------------------------------------------------
  843.  
  844.     Enhance reverse mapping.
  845.         The new BIND 4.9.* gethostbyaddr() can be configured
  846.         to return host aliases in case multiple PTR records
  847.         were encountered during the reverse lookup.
  848.         It is unclear what the official host name should be.
  849.         Should perhaps abandon the idea of official host name.
  850.         However, the PTR records are still exempt from the new
  851.         round-robin scheduling, and are returned in the order
  852.         in which they are defined in the zone file.
  853.  
  854.     Enhance error reporting.
  855.         After a negative return from gethostbyname/gethostbyaddr
  856.         we want to know whether the answer was authoritative or
  857.         not. In a few places we are able to find out, but this
  858.         is a kludge and needs to be reimplemented.
  859.  
  860. # ----------------------------------------------------------------------
  861. # WISHLIST
  862. # ----------------------------------------------------------------------
  863.  
  864.     Skip printing of second SOA in zone listing.
  865.         Asked by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  866.  
  867. # ----------------------------------------------------------------------
  868. # NOTES
  869. # ----------------------------------------------------------------------
  870.  
  871.     Include files and resolver library.
  872.         If you are linking this utility with an explicit resolver
  873.         library, make sure you will be compiling with the same
  874.         include files that were used to build the resolver library.
  875.         The BIND 4.9 include file <resolv.h> is incompatible with
  876.         the BIND 4.8 version. This utility can handle both versions,
  877.         but you cannot link with an 4.9 library after compilation
  878.         with the 4.8 include files, and vice versa.
  879.  
  880.     Old resolver libraries.
  881.         The res_mkquery() routine in the SUN-supplied resolver
  882.         library on SunOS <= 4.1.3 adds the default domain to given
  883.         single names if REF_DEFNAMES is set. This is not correct and
  884.         leads to undesired results if you query about toplevel domains.
  885.         It may be a pre-BIND 4.8.2 problem.
  886.         The same behavior is reported in the default ultrix resolver.
  887.         This will not be fixed in host. The documentation states that
  888.         you need BIND 4.8.2 or higher.
  889.         Problem noted by Peter Koch <pk@TechFak.Uni-Bielefeld.DE>.
  890.  
  891.     Vendor-specific resolver libraries.
  892.         Some vendors supply resolver libraries with configurable
  893.         lookup strategies for gethostbyname/gethostbyaddr, e.g. to
  894.         consult DNS, NIS, /etc/hosts, or other databases, in specific
  895.         order. Such libraries are to be avoided when linking host.
  896.         It is meant to query the DNS and DNS only.
  897.  
  898.     SUN's resolver library on solaris 2.x
  899.         If you are on solaris 2.x and you don't have a proper BIND
  900.         resolver library to link with, but have to use the broken
  901.         default library, you can define NO_YP_LOOKUP in the Makefile
  902.         to prevent gethostbyname/gethostbyaddr querying the YP/NIS.
  903.         SUN will probably implement BIND 4.9.3 after its release.
  904.  
  905.     Multiple answers during zone listing.
  906.         During zone transfers BIND encapsulates every resource
  907.         record in a seperate reply buffer containing a HEADER
  908.         and an answer section (ancount == 1). The authority and
  909.         additional section are empty. The query section is also
  910.         empty except in the very first reply buffer.
  911.         Some non-BIND implementations may send multiple answers
  912.         per reply buffer (ancount > 1).
  913.  
  914. # ----------------------------------------------------------------------
  915. # MISC
  916. # ----------------------------------------------------------------------
  917.  
  918.     Port to DEC/Alpha with OSF/1.
  919.         Requested by various people.
  920.         This requires basically two adaptations:
  921.         - sizeof(u_long) is 64 bits instead of 32 bits.
  922.           Affects ip address fields and some fixed fields in the
  923.           nameserver query/answer buffers.
  924.         - pointers in C subroutine arguments are 64 bit quantities.
  925.           Affects the varargs modules.
  926.         Suggestions by Dietrich Wiegandt <dietrich@dxcern.cern.ch>
  927.         and David Cherkus <cherkus@zk3.dec.com>.
  928.  
  929.     Compatibility with BIND 4.9.
  930.         Don't use the u_long types any more.
  931.         The 'struct state' is now 'struct __res_state'.
  932.         New resolver library has various hooks for 'dig'.
  933.         New resolver library prints to stdout with leading ";" but
  934.         unfortunately not everywhere. It prints to stderr sometimes
  935.         also with ";" but does not so in the perror() messages.
  936.         (Things have been corrected in BIND 4.9.3).
  937.         BIND 4.9 prints FQDN with trailing dot.
  938.         BIND 4.9 prints TXT strings within double quotes.
  939.  
  940.     New features of BIND 4.9.3.
  941.         Don't use sizeof() for u_int, u_short, struct in_addr, and
  942.         HEADER, but use predefined constants for entities that have
  943.         a fixed field width.
  944.         A new parameter _res.ndots has been defined.
  945.         The res_search() module may query the given name ``as_is''.
  946.         The res_search() module retries after SERVFAIL.
  947.         The res_send() module marks a bad server status for almost
  948.         every error condition.
  949.         Extra checks are carried out to ensure that a reply packet
  950.         really is the answer to a query: nameserver addresses and
  951.         query fields are compared.
  952.  
  953.